ACD systems distribute calls--whether inbound or outbound--for handling to any suitable ones of available call-handling agents according to some predefined criteria. In many existing systems, such as the Lucent Technologies Definity.RTM. ACD system, the criteria for handling the call from the moment that the ACD system becomes aware of the call until the call is connected to an agent are customer specifiable (i.e., programmable by the operator of the ACD system) via a capability called call vectoring. Normally in present-day ACD systems, when the ACD system's controller detects that an agent has become available to handle a call, the controller identifies all predefined call-handling skills of the agent (usually in some order of priority) and delivers to the agent the highest-priority oldest-waiting call that matches the agent's highest-priority skill. Generally the only condition that results in a call not being delivered to an available agent is that there are no calls matching any of the agent skills waiting to be handled.
When a plurality of agents are available to handle a call, any one of a number of agent-selection algorithms are presently employed to select one of the available agents. "Uniform call distribution", "most idle agent", and "least occupied agent" algorithms seek to optimize agent fairness. And an "expert agent distribution" algorithm seeks to optimize quality of service. None of these algorithms, however, attempt to select an available agent in such a way that maximizes probability that a next (future) call will also find a suitable agent already available and not have to wait for one to become available.